//////////////////////////////////////////////////////////////////////////////////////////////////////
// 项目名   : Readme.html
// 文件名   : StringView.h
// 作者     : Aiye
// 日期     : 2025/9/7 22:12
// 邮箱     : 2878548868@qq.com
// 摘要     : 字符串视图
//////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef README_HTML_STRINGVIEW_H
#define README_HTML_STRINGVIEW_H
#include <iostream>
#include <string>

/**
 * @brief 非拥有式的字符串引用，提供对字符串数轻量级访问
 */
class StringView
{
public:
    StringView()
    {
        // 创建操作
        std::string str{"Hello, World"};
        std::string_view sv1{str}; // string构建
        std::string_view sv2{"Hello"}; // 从const char* 构建
        std::string_view sv3{str.data() , 5}; // 字符指针和长度创建

        // 访问操作
        std::cout << "Size:" << sv1.size() << std::endl;
        std::cout << "Data:" << sv1.data() << std::endl;
        std::cout << "First character:" << sv1.front() << std::endl;
        std::cout << "Last character:" << sv1.back() << std::endl;

        // 字符串操作
        auto pos = sv1.find("World");
        if (pos != std::string_view::npos)
        {
            std::cout << "Found at position: " << pos << std::endl;
        }

        // 比较操作
        if (sv1.compare(sv2) == 0)
        {
            std::cout << "Equal" << std::endl;
        }

        // 移除前缀和后缀
        sv1.remove_prefix(7); // 移除前7个字符
        sv1.remove_suffix(1); // 移除后1个字符
    }
};
#endif //README_HTML_STRINGVIEW_H